ISO 8601は、日付と時刻の表記に関するISOの国際規格である。この規格の主眼は、日付と時刻の記述順序が国や文化によってまちまちである[注 1][1]ものを、大→小の順序(ビッグエンディアン big-endian)を貫徹して、日付・時刻の記述順序をただ一種類に標準化していることにある[2]。
年月日の区切り記号は「-」(ハイフン)のみを用い、「/」などを禁じている。また時刻表現を24時制だけに限定している。
2022年9月4日を、2022-09-04(拡張形式)もしくは20220904(基本形式)と表記する[注 2]。
2022年9月4日の時刻として 16時07分48.53秒 を併せて表記する場合は、2022-09-04T16:07:48.53(拡張形式)または20220904T160748.53(基本形式)と表記する。すなわち記号 T で区切った後に時刻を続ける。
上記以外に、日の番号、暦週の番号、タイムゾーン、継続時間、期間などの記述方法についても規定している。
日本では、これに準拠して日本産業規格JIS X 0301「情報交換のためのデータ要素及び交換形式ー日付及び時刻の表記」が定められている。JISにおいては、元号(明治?令和)による年の規定を追加している[3]。 規格のこれまでの経緯は次のとおりである。 ISO 8601形式の時刻表記例[11] 基本形式(基本表記・標準表記)と拡張形式(拡張表記)の2種類の表記方法があり、いずれも日付と時刻を記号 T で区切る。 基本形式では、日付と時刻それぞれの表記内には区切りを入れない。例えば、いま、年=YYYY(4桁の数字。グレゴリオ暦)、月=MM(2桁の数字。以下同様)、日=DD、時=hh、分=mm、秒=ss であって協定世界時(UTC)よりも09時間00分早い日本のような地域での表記は、基本形式では YYYYMMDDThhmmss+0900 となる。現地時刻は協定世界時にタイムゾーンの値を加減算した値になる。 拡張形式は、日付と時刻それぞれの表記内に区切りを入れて視認性を良好にした表記方法である。まず、年を表す4桁の数字の直後のハイフン (-) 区切りで、元号などのローカルな年月日表記ではないことを明らかにする。続く月と日の表記をハイフン (-) で区切る。基本形式と同様に日付と時刻を記号 T で区切り、時分秒の表記はコロン (:) で区切る。 末尾に、UTCならば記号 Z を付ける。他のタイムゾーンならばプラス記号 (+) またはマイナス記号 (−) で区切り、続けて時差を書く。拡張形式では、上記の例の場合は、YYYY-MM-DDThh:mm:ss+09:00 となる。 年月日と時分秒それぞれの区切りの符号には、ISOおよびJISによらない一般の慣習として、斜線「/」(2022/09/27)またはピリオド「.」(2022.09.27)が使われることがある。しかし、ISOおよびJISに従う場合、日付の表記では区切り記号にハイフン「-」だけを用い、時刻の表記では区切り記号にコロン「:」だけを用いる。ただし、日本において元号による年を表記する場合は、JIS X 0301に基づき、令04.09.27 または R04.09.27 のようにピリオドを用いる(#国家規格による拡張)。 日付と時刻との組合せにおいて基本形式と拡張形式との混在は許されず、どちらかに統一されていなければならない。 プログラミング言語の多くが拡張形式の日付を処理するようになっている。基本形式にも対応するものは必ずしも多くない。 グレゴリオ暦による年月日は、パリにおけるメートル条約の調印年月日を1875年5月20日とすることによって定義されている[12]。 曜日は、2000年1月1日を土曜日とすることによって定義されている[13]。 週の最初の日は、月曜日である[14]。 月日、時分秒の起点の指定は特にない。 ISO 8601 では日付の指定の仕方に、年と月と日を指定する方法、年と年内の日の番号を指定する方法、年と週と曜日を指定する方法の3つがある(下記に詳説)。 日付の表記にはグレゴリオ暦を用いる。これはグレゴリオ暦が導入された1582年10月15日以前にも適用される(「先発グレゴリオ暦」も参照)。ただし、0000年から1582年の範囲は、事前に通信の送信側と受信側との間での合意がある場合にだけ使うことができる[15]。一般(たとえばJavaライブラリ)には1582年以前の日付表現はユリウス暦と解釈されるが、ISO 8601 にはそのような措置はない。そのため、それらの日付表現をこのISO準拠にするにはグレゴリオ暦への換算が必要である。 年は(基本形式の場合でも拡張形式の場合でも)4桁の数字で表記される。 月の表記は 01 から 12 の値を取り、それぞれ1月から12月を表す。 YYYY-MM-DDまたはYYYYMMDD YYYYMMDD(基本形式)または YYYY-MM-DD(拡張形式) のいずれかで表記される。「年」が最初にあることを明らかにするため、また視認性を良くするために、この拡張表記がよく用いられている。 YYYY-MM だけにして -DD を省くことも、YYYY だけにして MMDD(-MM-DD) を省くことも可能であり、その場合、前者は年月だけを、後者は年だけを表す。ただし、YYYYMM というようなハイフン(-)なしで数字6桁だけの表記は認められていない。 YYYY-DDD と表記する。DDD は、年内の日の番号である。1月1日は 001 と表記し、12月31日は平年では 365 、閏年では 366 になる。 この記法では、年が、通常の場合の年とは異なる年になる場合がある。POSIXのstrftimeにある%Gはこの記法の年を表記する。JIS X 0301にも具体例の例示がある。 YYYY-Www-D と表記する。ww は年内の暦週の番号で、年の第1週は 01、最終週は 52 または 53 となる。 この記法では、ある年における「最初の木曜日を含む週が、その年の第1週である。」と規定されている。
経緯
ISO 2014:1976[4] Writing of calendar dates in all-numeric form
ISO 8601:1988[5] Data elements and interchange formats ? Information interchange ? Representation of dates and times
ISO 8601:2000[6] 同上
ISO 8601:2004[7] 同上
ISO 8601-1:2019 (Date and time -- Representations for information interchange -- Part 1: Basic rules)[8] および ISO 8601-2:2019 (Date and time -- Representations for information interchange -- Part 2: Extensions)[9] の2分冊(2019年2月発行。2021年時点の最新版)
ISO 8601-1:2019/Amd 1:2022 (Date and time ? Representations for information interchange ? Part 1: Basic rules ? Amendment 1: Technical corrections)[10]
基本形式と拡張形式
基本形式20240503T170344+0900
拡張形式2024-05-03T17:03:44+09:00
起点
日付
年の表記(0000年?9999年)
年の表記(0000年より前、9999年より後)
0000年より前または9999年より後の年を表記する場合には、事前に通信の送信側と受信側との間での合意が必要である[16]。例えば、先頭に正負の符号(+あるいは-)を付して任意の桁数の数字を追加することができるという合意などである(任意の桁数の追加であるため年の桁数は5桁以上(正負の符号を含めると6桁以上)になりうる。)。なお、拡張表記の場合、事前の合意次第では+019332が有効であっても+000299は無効という場合がありうる。(西暦10000年問題も参照)
年の表記は 0001 が西暦1年を表し、0000 は紀元前1年、-0001 は紀元前2年、-0002 は紀元前3年である(天文学的紀年法と同じ)。これは通常の西暦紀元には西暦0年が存在しないためである(ちなみに0世紀も存在しない)。
月の表記
年と月と日
YYYY-MM(YYYYMM は不可 )
YYYY
例:
20220904(基本形式)および 2022-09-04(拡張形式)は、いずれも2022年9月4日を表す。
例:
2004-042004年4月
20042004年
202000年代。ただし、2000年から2099年までの100年間であり、21世紀(2001年から2100年まで)の100年間より1年前へずれている100年間である。原文ではcenturyと表現されているため注意が必要である(JIS X 0301ではcenturyを「百年代」と訳している)。
年と年内の日の番号
例:
2004-092 (2004092)2004年の第92日目、すなわち4月1日を表す。
年と週と曜日
D は曜日を表し、月曜日が 1、日曜日は 7 である。「8」「9」は表記数値とされない(エラー扱い)。
例:
2004-W14-4 (2004W144)2004年の第14週の木曜日、すなわち4月1日を表す。
「その年の第1週は、1月4日を含む週である。」としても、基準としては等しい。
具体例を以下に示す。年初において以下の曜日に該当する場合、その日は新年第1週の日としてではなく、前年最終週の日として扱う。
1月1日金曜日・1月2日土曜日・1月3日日曜日
1月1日土曜日・1月2日日曜日
1月1日日曜日
同様に、年末において以下の曜日に該当する場合、その日はその年の最終週の日としてではなく、次の年の第1週の日として扱う。
Size:60 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)』
担当:undef